package kubernetes

import (
	"k8s-admin/service/kubernetes"
	"k8s-admin/utils"

	"github.com/gin-gonic/gin"
)

// 获取所有namespace
func GetClusterNamespaceLists(ctx *gin.Context) {
	param := ctx.Param("cid")
	lists, err := kubernetes.NewK8sInterface().GetClusterNamespaceLists(param)
	if err != nil {
		utils.ReturnContext(ctx).Failed("失败", err.Error())
	} else {
		var tmp []map[string]interface{}
		for _, item := range lists.Items.Items {
			tmp = append(tmp, map[string]interface{}{
				"namespace_name": item.Name,
				"uid":            item.UID,
				"labels":         item.Labels,
				"annotations":    item.Annotations,
				"create_time":    item.CreationTimestamp,
				"status":         item.Status.Phase,
			})
		}
		utils.ReturnContext(ctx).Successful("成功", tmp)
	}
}

// 删除namespace
func DeleteClusterNamespace(ctx *gin.Context) {
	param := new(struct {
		NamespaceName string `form:"namespace_name" binding:"required"`
	})
	cid := ctx.Param("cid")
	if err := ctx.ShouldBind(param); err != nil {
		utils.ReturnContext(ctx).Failed("失败", err.Error())

	} else {
		err = kubernetes.NewK8sInterface().DeleteClusterNamespace(cid, param.NamespaceName)
		if err != nil {
			utils.ReturnContext(ctx).Failed("失败", err.Error())

		} else {
			utils.ReturnContext(ctx).Successful("成功", param.NamespaceName+"删除成功")
		}
	}

}

// 创建namespace
func CreateClusterNamespace(ctx *gin.Context) {
	cid := ctx.Param("cid")
	param := new(struct {
		NamespaceName string `json:"namespace_name" form:"namespace_name" binding:"required"`
	})
	if err := ctx.ShouldBind(param); err != nil {
		utils.ReturnContext(ctx).Failed("失败", err.Error())
	} else {
		err = kubernetes.NewK8sInterface().CreateClusterNamespace(cid, param.NamespaceName)
		if err != nil {
			utils.ReturnContext(ctx).Failed("失败", err.Error())

		} else {
			utils.ReturnContext(ctx).Successful("成功", param.NamespaceName+"创建成功")
		}
	}
}
